//
// Copyright (C) [2024] Xingyun Integrated Circuit, Inc.
//
// GreenCode was a private technology asset of Xingyun Integrated Circuit， Inc （Confidential）
//  Author: Shawn.Tan
//  Date : 2025.10.28
//
//  History : Initial Version 2025.10.28
//
//
#ifndef Green_Defines_H
#define Green_Defines_H

/*!
  \namespace Green
  \brief Application scope name space

  Namespace for the FORCE ISG code.
 */
namespace Green {

  typedef unsigned long long uint64;
  typedef unsigned int uint32;
  typedef unsigned char uint8;
  typedef long long int64;
  typedef signed int int32;
  typedef signed char int8;

  typedef const unsigned long long cuint64;
  typedef const unsigned int cuint32;
  typedef const unsigned char cuint8;
  typedef const long long cint64;
  typedef const signed int cint32;
  typedef const signed char cint8;
  typedef const bool cbool;

#define MAX_UINT32 0xffffffff
#define MAX_UINT64 0xffffffffffffffffULL
#define MAX_ENUM_SIZE 100
#define MAX_ASM_SIZE 128
#define MAX_PAGE_TABLE_LEVEL 3

#define FORCE_CSET_DEFAULT_PERLINE 10 //ConstraintSetSerializer, default readable value for large constraint related debug messages

#define ASSIGNMENT_OPERATOR_ABSENT(ClassName) ClassName& operator=(const ClassName&) = delete
#define ASSIGNMENT_OPERATOR_DEFAULT(ClassName) ClassName& operator=(const ClassName&) = default
#define COPY_CONSTRUCTOR_ABSENT(ClassName) ClassName(const ClassName&) = delete
#define COPY_CONSTRUCTOR_DEFAULT(ClassName) ClassName(const ClassName&) = default
#define DEFAULT_CONSTRUCTOR_ABSENT(ClassName) ClassName() = delete
#define DEFAULT_CONSTRUCTOR_DEFAULT(ClassName) ClassName() = default
#define DESTRUCTOR_DEFAULT(ClassName) ~ClassName() = default
#define SUBCLASS_DESTRUCTOR_DEFAULT(ClassName) ~ClassName() override = default
#define SUPERCLASS_DESTRUCTOR_DEFAULT(ClassName) virtual ~ClassName() = default
#define PICKY_IGNORED _Pragma("GCC diagnostic ignored \"-Weffc++\"")
#define PICKY_IGNORE_BLOCK_START _Pragma("GCC diagnostic push") \
_Pragma("GCC diagnostic ignored \"-Weffc++\"")
#define PICKY_IGNORE_BLOCK_END _Pragma("GCC diagnostic pop")

  template<typename T>
  uint64 sizeof_bits()
  {
    return sizeof(T) * 8;
  }
}

#endif
